#ifndef _INFLATE_VEHICLE_H_
#define _INFLATE_VEHICLE_H_

#include <dispatch_system/vehicle.h>

namespace moying
{
namespace navigation
{
    class InflateVehicle: public Vehicle
    {
        public:
            InflateVehicle();
            InflateVehicle(int type, const std::string &name);
            virtual ~InflateVehicle();
            virtual void setMovePatterns();
            virtual std::vector<MovePattern> & getValidMovePatterns(int sm_state);
            virtual double getTheta(int dir);

            void registerVehicle(const VehiclePtr &vehicle);
            void unregisterVehicle(const VehiclePtr &vehicle);
            inline bool hasUniqueVehicle(const VehiclePtr &vehicle)
            {
                return inflated_vehicles_.size() == 1 && (*inflated_vehicles_.begin() == vehicle);
            }
            inline bool empty()
            {
                return inflated_vehicles_.size() == 0;
            }
        // private:
            std::set<VehiclePtr> inflated_vehicles_;
    };
    typedef std::shared_ptr<InflateVehicle> InflateVehiclePtr;
}
}
#endif // _INFLATE_VEHICLE_H_